package com.jbp.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.lang.annotation.Target;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 
 * 
 * @author lucheng feng
 * @email jbp@gmail.com
 * @date 2020-06-13 23:01:27
 */
@Data
@TableName("user")
@ApiModel(value="user对象",description="用户")
public class User implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 
	 */
	@ApiModelProperty(value="编号",name="id")
	@TableId
	private Integer id;
	/**
	 * 随机生成 8位
	 */
	@ApiModelProperty(value="靓号",name="uuid")
	private String uuid;
	/**
	 * 手机号
	 */
	@ApiModelProperty(value="手机号",name="mobile")
//	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String mobile;
	/**
	 * 名字
	 */
	@ApiModelProperty(value="名字",name="name")
	private String name;
	/**
	 * man 男 women 女
	 */
	@ApiModelProperty(value="性别",name="man 男 women 女")
	private String sex;
	/**
	 * 城市
	 */
	@ApiModelProperty(value="城市",name="city")
	private String city;
	/**
	 * 生日
	 */
	@ApiModelProperty(value="生日",name="birthday")
	private String birthday;
	/**
	 * 升高
	 */
	@ApiModelProperty(value="升高",name="height")
	private String height;
	/**
	 * 用户头像
	 */
	@ApiModelProperty(value="用户头像",name="img")
	private String img;
	/**
	 * 个性签名
	 */
	@ApiModelProperty(value="个性签名",name="individuality")
	private String individuality;
	/**
	 * 兴趣爱好
	 */
	@ApiModelProperty(value="兴趣爱好",name="interest")
	private String interest;
	/**
	 * 密码
	 */
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	@ApiModelProperty(value="密码",name="password")
	private String password;

	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String qqId;

	private String qqName;
	private String appleUserId;

	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String wechatId;

	private String wechatName;
	/**
	 * 加密言
	 */
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	@ApiModelProperty(value="加密言",name="salt")
	private String salt;
	/**
	 * 爵位
	 */
	@ApiModelProperty(value="爵位",name="nobility")
	private Integer nobility;

	@ApiModelProperty(value="转账开关 yes开 no关",name="nobility")
	private String transfer;
	/**
	 * 等级
	 */
	@ApiModelProperty(value="等级",name="level")
	private Integer level;

	@TableField(exist = false)
	private boolean levelOn;

	/**基础爆率 默认1*/
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private BigDecimal baseLuckRate;
	/**
	 * 
	 */
	@ApiModelProperty(value="是否在线 online  离线 offline 隐身 hiding 在房间 inroom",name="isOnline")
	private String isOnline;

	//创建方式  自己注册0  小号1
	private int createType;
	/**
	 * 设备号
	 */
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	@ApiModelProperty(value="设备号",name="device")
	private String device;
	/**
	 * 邀请码 大写字母 加数字
	 */
	@ApiModelProperty(value="邀请码",name="code")
	private String code;

	private Integer upUserId;

	/**邀请码，完善资料时填入*/
	@TableField(exist = false)
	private String inviteCode;

	@ApiModelProperty(value="职业",name="vocation")
	private String vocation;

	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String ip;
	/**
	 * 
	 */
	@ApiModelProperty(value="创建时间",name="createTime")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private Date createTime;
	/**
	 * 
	 */
	@ApiModelProperty(value="修改时间",name="updateTime")
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	private Date updateTime;

	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private Date editTime;

	@ApiModelProperty(value="类型note 短信登陆 pass 密码登录",name="type")
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String type;

	// aes加密相关信息，不在接口中返回
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String aesVipara;
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String aesKey;

	@ApiModelProperty(value="好友状态 0 无，1好友 2 关注 3 粉丝")
	@TableField(exist = false)
	private Integer friendStatus;

	@ApiModelProperty(value="拉黑 0 否，1是")
	@TableField(exist = false)
	private Integer black;

	@ApiModelProperty(value="粉丝数量")
	@TableField(exist = false)
	private Integer fansNo;

	@ApiModelProperty(value="短信验证码",name="messageCode")
	@TableField(exist = false)
	private String messageCode;

	@ApiModelProperty(value="token",name="token")
	@TableField(exist = false)
	private String token;

	@ApiModelProperty(value="sessionId",name="sessionId")
	@TableField(exist = false)
	private String sessionId;

	@ApiModelProperty(value="兴趣爱好集合",name="hobbys")
	@TableField(exist = false)
	private List<String> hobbys;

	@ApiModelProperty(value="个人相册集合",name="photos")
	@TableField(exist = false)
	private List<UserPhoto> photos;

	@ApiModelProperty(value="在线房间信息",name="room")
	@TableField(exist = false)
	private Room room;

	//封号 1是 0否
	private Integer del;
	private Integer deviceLock;

	private String voice;
	private BigDecimal bloodLine;

	private String temps;//备用字段

	@TableField(exist = false)
	private boolean showLuck;

	@TableField(exist = false)
	private boolean god;
	@TableField(exist = false)
	List<SkillUser> skills;

	@TableField(exist = false)
	@ApiModelProperty(value="经度")
	private BigDecimal lng;
	//纬度
	@TableField(exist = false)
	@ApiModelProperty(value="纬度")
	private BigDecimal lat;
	//地址
	@TableField(exist = false)
	@ApiModelProperty(value="地址")
	private String address;

	@TableField(exist = false)
	private Equip car;
	@TableField(exist = false)
	private Equip head;
	@TableField(exist = false)
	private Equip light;
	@TableField(exist = false)
	private Equip card;
	@TableField(exist = false)
	private Equip decor;
}
